package com.rabbitmq.ChattingRoom.service;

import com.rabbitmq.ChattingRoom.util.Entity.User;
import com.rabbitmq.ChattingRoom.util.common.req.UserRegisterReq;
import com.rabbitmq.ChattingRoom.util.common.resp.UserRESP;

import java.util.List;

public interface UserService {
    /**
     * 用户注册
     * @param user
     * @return
     */
    Integer register(UserRegisterReq user);

    /**
     * 通过用户名查询
     * @param username 用户名
     * @return 用户信息
     */
    User selectUserByName(String username);

    /**
     * 根据 id 查找用户信息
     * @param id
     * @return
     */
    User selectUserById(Long id);

    /**
     * 通过昵称查询
     * @param nickname 昵称
     * @return 返回查询到的实体类
     */
    User selectUserByNickname(String nickname);

    /**
     * 判断用户名是否存在
     * @param username 用户名
     * @return 存在返回 true  不存在返回false
     */
    boolean isExistName(String username);

    /**
     * 判断id是否存在
     * @param id
     * @return
     */
    boolean isExistId(Long id);

    /**
     * 获取当前平台所有用户列表
     */
    List<UserRESP> getUsers();

    /**
     * 根据聊天室获取所有用户列表
     */
    List<UserRESP> getUsersByRoomId(Long roomId);

    /**
     * 更新用户信息
     */
    int UpdateUser(User user);
}
